/**
 * 
 */
package ec.edu.uce.tour.servicio.catalogo;

import java.util.List;

import javax.ejb.Local;

import ec.edu.uce.tour.dao.util.ParametroSentencia;
import ec.edu.uce.tour.dto.CiudadDTO;
import ec.edu.uce.tour.dto.ProvinciasDTO;
import ec.edu.uce.tour.dto.SelectOneListDTO;
import ec.edu.uce.tour.excepcion.AccesoDatosExcepcion;
import ec.edu.uce.tour.excepcion.NegocioException;
import ec.edu.uce.tour.excepcion.UceTourException;


/**
 * @author gabenc
 *
 */
@Local
public interface ServicioCatalogos {
	/**
	 * Guarda el catalogo enviado
	 * @param catalogo
	 */
	public  void guardarCatalogo(Object catalogo) throws UceTourException;
	
	public void eliminarCatalogo(Object catalogo) throws UceTourException;
	
	public  void modificarCatalogo(Object catalogo)  throws UceTourException;
	
	public <T> List<T> obtenerListaCatalogos(Class<T> nombre) throws UceTourException;
	
	/**
	 * Obtiene los datos para cargar dentro de un selectItem
	 *
	 * @param nombre nombre de la clase de la cual se va sacar datos
	 * @param campoValor valor que se mostrar en el selectitem
	 * @param campoEstado si se envia null no se usa la condicion, dato por el cual se filtra la consulta
	 * @param valorEstado valor por el cual se filtra
	 * @return
	 * @throws AccesoDatosExcepcion
	 * @throws NegocioException
	 */
	public List<SelectOneListDTO> obtenerDatosSelectList(Class<?> nombre,String campoId, String campoValor, String campoEstado, ParametroSentencia valorEstado) throws UceTourException;
	
	/**
	 * Metodo encargado de obtener una lista de provincias de acuerdo al id del pais
	 * @param idPais
	 * @return
	 */
	public List<ProvinciasDTO> cargarProvinciasPorPais(Integer idPais)  throws UceTourException;
	
	/**
	 * Obtiene un catalogo por Id
	 * @param idCatalogo
	 * @return
	 */
	public Object cargarCatalogoPorId(Class<?> nombre, Integer idCatalogo)  throws UceTourException;

	/**
	 * Metodo encargado de obtener una lista de provincias de acuerdo al id del pais para ciudad
	 * @param idPais
	 * @return
	 * @throws AccesoDatosExcepcion
	 * @throws NegocioException
	 */
	public List<CiudadDTO> cargarListaProvinciasPorIdPais(Integer idPais)  throws UceTourException;

	public List<CiudadDTO> cargarListaCiudadesPorIdPais(Integer idPais)
			throws UceTourException;
	
}
